<?php
/**
 * Arquivo de configurações gerais
 * @package default
 * @version 1.0
 */
// -------------------------------------------------------------
// Definição de constantes de uso geral
/**
 * Momento inicial de execução do script
 */


define('INICIO', microtime(true));
/**
 * Separador de diretórios.
 * DIRECTORY_SEPARATOR é uma constante padrão do PHP
 * que recupera o formato da barra que separa os diretórios
 */
define('DS', DIRECTORY_SEPARATOR);

/**
 * Separador de caminhos no include_path.
 * PATH_SEPARATOR é uma constante padrão do PHP
 * que recupera o separador (: no Linux e ; no Windows)
 */
define('PS', PATH_SEPARATOR);

// -------------------------------------------------------------
// Definição de constantes que representam os diretórios
/**
 * Raiz da aplicação
 */
define('RAIZ', dirname(__FILE__));

/**
 * Raiz da aplicação a partir do DOCUMENT_ROOT na URL
 *
 */
define('BASE', (dirname($_SERVER['PHP_SELF'])=="/" || dirname($_SERVER['PHP_SELF']) == "\\")?"":dirname($_SERVER['PHP_SELF']));

/**
 * Local para os arquivos gerais de configuração
 */
define('CONFIG', RAIZ . DS . 'config');

/**
 * Local onde salvar as bibliotecas de terceiros
 */
define('LIB', RAIZ . DS . 'lib');

/**
 * Local dos arquivos do controlador
 */
define('CONTROLADOR', RAIZ . DS . 'controlador');

/**
 * Local onde armazenar as classes principais
 */
define('MODELO', RAIZ . DS .'modelo');

/**
 * Local onde armazenar arquivos utilitários de acesso a dados
 */
define('DADOS', MODELO . DS .'dados');

/**
 * Local onde armazenar as exceções de negócio
 */
define('EXCECOES', MODELO . DS .'excecoes');

/**
 * Local dos arquivos escritos pelo próprio servidor Web
 */
define('TMP', RAIZ . DS . 'tmp');

/**
 * Local dos arquivos da visão
 */
define('VISAO', RAIZ . DS . 'visao');

/**
 * Local dos arquivos da visão
 */
define('TEMPLATE', VISAO);

/**
 * Local onde serão criadas as páginas
 */
define('WEB_CONTENT','webcontent');

// -------------------------------------------------------------
// Delegando operações a arquivos de configuração

/**
 * Inclusão do arquivo que configura
 * o autoload do projeto
 */
require_once CONFIG . DS . 'autoload.php';
/**
 * Inclusão do arquivo de roteamento 
 */
require_once CONFIG . DS . 'Roteamento.php';
/**
 * Inclusão do arquivo que configura o
 * ambiente onde o script será executado 
 */
require_once CONFIG . DS . 'ambiente.php';

/**
 * Inclusão do arquivo que configura o perfil 
 * de reporte de erros
 */
require_once CONFIG . DS . 'reporte_erros.php';


// -------------------------------------------------------------

// Carregando o Controlador principal
try {
  Controlador::getInstancia()->despachar();
} catch (ControleException $ce) {
  	ControleException::capturar($ce);
}

// -------------------------------------------------------------
// Última operação, exibir o tempo de processamento

if ($GLOBALS['dados_ambiente']['geral']['exibir_tempo']) {
  echo microtime(true) - INICIO;
}
?>